The present invention relates to the multi-rate transcoding of data signals such as video, audio and/or multimedia, and is particularly applicable to the streaming of data from a server to a client over a network, such as the Internet or a satellite or cable television system.
Although the invention is described herein in connection with a multi-rate transcoder for compressed video applications, it should be appreciated that the inventive concepts are applicable to any type of digital data stream in which there is a need to provide the same data at multiple rates. Accordingly, the invention and the appended claims are not limited to the video applications specifically disclosed herein.
Most network applications can be divided into two main components. These are a client and a server. There are numerous examples of clients and servers. In particular, streaming involves sending movies or other content, such as audio and/or other multimedia formats from a server to a client over a network such as Internet. Streaming is different from simple file transfer, in that the client plays the movie (or other content) as it arrives from the network, rather than waiting for the entire movie to be received before playing. Real-time streams can be sent one-to-one (unicast) or one-to-many (multicast). In unicast, the client contacts the server to request a movie. The server then replies to the client with the information about the requested movie. The actual movie streams are then sent to the client. In multicast, one copy of each stream of a movie is “broadcast” over each branch of a network. Clients receive the streams by “joining” the multicast. Not all routers support multicasting.
A client, such as a cable or satellite television subscriber, normally communicates with one server at a time. For example, the client terminal sends a request to a server (unicast) and receives streams from a server (both unicast and multicast). From the server's perspective at any given time, it is common for the server to be communicating with multiple clients. For example, in unicast, a server may send out streams to different clients simultaneously, and in multicast, multiple clients receive streams broadcast by a server.
With recent advances in video compression, the size of raw video material can be significantly reduced by employing compression technology, such as, MPEG 1, 2, 4 (where MPEG are standards promulgated by the Moving Picture Experts Group) and ITU-T H.261, 3, 3+, or L (where ITU standards are promulgated by the International Telecommunications Union), without sacrificing picture quality. Hence, it is expected that there will be a greater amount of pre-compressed video material available at the server end in the future. A server may therefore need to have the capability to adjust the rates of pre-compressed video material stored at the server end in order to accommodate the bandwidth requirements of different clients. A transcoder is one options for addressing this problem. By definition, a transcoder is a device for converting a pre-compressed bit stream into another bit stream with different formats. Such different formats can include resolution, bit rates, and other variable parameters. The present invention provides a transcoder that provides rate conversion of a single input stream to provide a plurality of different rate output streams.
When client (e.g., a set-top box for receiving television services at a subscriber's home) requests a movie, for example, it often provides information about the network condition at the client end as well. The server can then transcode the pre-compressed streams of the requested movie at a bandwidth suitable for the client end. An issue that has to be addressed, however, is that the server may receive multiple requests for the same movies from different clients. Moreover, the bandwidth at the client ends can be very different. For example, a phone modem at 56 Kb/s and a Cable modem at a few Mb/s have different abilities to receive data from the server. Hence, it would be advantageous for a single compressed video bit stream at the server end be transcoded into several different new streams at different rates. A straightforward solution would be to use different transcoders to transcode the same input video stream at different rates in response to the client requests. This solution is not practical, however, as it requires the server to have as many transcoders as the clients it serves, which would be cost prohibitive.
Another solution would be for one transcoder at the server end to process the same video stream as many times as requested by different clients, but one at a time. That is, before the server completes the request by one client, the rest of the clients will have to wait. Thus, to address the issue of one server and multiple services, either the system operator will have to install more transcoders or the clients will have to wait for their turn to receive the requested service (e.g., movie). Moreover, by the above two solutions, all the function blocks in a transcoder are required to be implemented for each request for the same video bit stream.
It would be advantageous to provide a reliable and cost effective transcoding solution that enables concurrent delivery of a service to a population of users (clients) at different bit rates, depending on the client requirements. The present invention provides a multi-rate transcoding solution having the aforementioned and other advantages.